﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Text.RegularExpressions;
using System.IO;

namespace ServerTCP
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
           
        }
        private ControlPowerPoint control = new ControlPowerPoint();
        private void btn_Connect_Click(object sender, EventArgs e)
        {

            ASCIIEncoding utf8 = new ASCIIEncoding();
            int Size = 1024;
            int port = 8080;
            IPAddress address = IPAddress.Parse("192.168.1.138");
            TcpListener listener = new TcpListener(address, port);
            listener.Start();

            MessageBox.Show("Server kết nối........");
            Socket s = listener.AcceptSocket();
            MessageBox.Show("Đã kết nối từ "+ s.RemoteEndPoint);
            byte[] data = new byte[Size];
            string chuoi = "abc: ";
            bool kt = false;
            while (!kt)
            {
                s.Receive(data);
               chuoi = utf8.GetString(data);
               MessageBox.Show(chuoi);
               string[] a = Regex.Split(chuoi, "\0"); 
               string ThongTin = a[0];
               if (ThongTin.Equals("TCP"))
               {
                   chuoi = utf8.GetString(data);
                   a = Regex.Split(chuoi, "\0");
                   ThongTin = a[0];
                   MessageBox.Show(chuoi);
                   break;
               }
               if (ThongTin.Equals("Open"))
               {
                   control.OpenPowerPoint();
               }
               if (ThongTin.Equals("Next"))
               {
                   control.Next();
               }
               if (ThongTin.Equals("Previous"))
               {
                   control.Previous();
               }
               if (ThongTin.Equals("Home"))
               {
                   control.Home();
               }
               if (ThongTin.Equals("End"))
               {
                   control.End();
               }

               if (ThongTin.Equals("Disconect"))
               {

                   s.Close();
                   listener.Stop();
                   kt = true;
                   MessageBox.Show("Đã ngắt kết nối");
                  return;
               }
             //  MessageBox.Show(chuoi);
              // kt = true;

            }

            //s.Close();
            //listener.Stop();

        }

        private void btn_UDP_Click(object sender, EventArgs e)
        {
          
            //dùng để chuyển ký tự về chuổi
            ASCIIEncoding utf8 = new ASCIIEncoding();
            int Size = 1024;// ký thước để nhận dữ liệu
            int port = 8080; // port 
           // IPAddress address = IPAddress.Parse("127.0.0.1"); // địa chỉ host
            MessageBox.Show("Server kết nối........");
            // tạo socket sữ dụng giao thức UPD
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
            MessageBox.Show("Đã kết nối từ " + s.RemoteEndPoint);
            // tạo chỗ để chứa liệu để nhận 
            byte[] data = new byte[Size];
            //tạo ra một đối tượng chứa địa chỉ host và port
            IPEndPoint Address_Ip = new IPEndPoint(IPAddress.Any,port);
            string m = "Nhu\0";
            string[] n = Regex.Split(m, "\0");
            // mở kết nối với địa chỉ host và ip
            s.Bind(Address_Ip);

            bool kt = false;
            while (!kt)
            {
                for (int i = 0; i < data.Length; i++)
                {
                    data[i] = 0;
                }

                EndPoint remoteEP = Address_Ip;
                // lắng nghe client gởi giử liệu qua
                int BytesRecevied = s.Receive(data);// s.ReceiveFrom(data, ref remoteEP);
                // chuyển dữ liệu đã nhận từ dạng ký tự sang chuổi
                string received_data = "";
                received_data = utf8.GetString(data);//System.Text.ASCIIEncoding.ASCII.GetString(data);
                string[] a = Regex.Split(received_data, "\0"); 
                string ThongTin = a[0];
                if (ThongTin.Equals("Open"))
                {
                    control.OpenPowerPoint();
                }
                if (ThongTin.Equals("Next"))
                {
                    control.Next();
                }
                if (ThongTin.Equals("Previous"))
                {
                    control.Previous();
                }
                if (ThongTin.Equals("Home"))
                {
                    control.Home();
                }
                if (ThongTin.Equals("End"))
                {
                    control.End();
                }

                if (ThongTin.Equals("Disconect"))
                {
                    control.Close();
                    s.Close();
                    kt = true;
                 //   MessageBox.Show("Đã ngắt kết nối");
                    this.Close();
                    return;
                   
                }

            MessageBox.Show(received_data.ToString());
              // kt = true;

            }
            //ngắt kết nối
            s.Close();
          
        }

        private void btn_Close_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private string streamReadLine(Stream inputStream)
        {
            int next_char;
            string data = "";
            while (true)
            {
                next_char = inputStream.ReadByte();
                if (next_char == '\n') { break; }
                if (next_char == '\r') { continue; }
                
                data += Convert.ToChar(next_char);
            }
            return data;
        }
        Stream inputStream;

        private void btn_connet_Click(object sender, EventArgs e)
        {

            ASCIIEncoding utf8 = new ASCIIEncoding();
            int Size = 900000;
            int port = 8080;
            IPAddress address = IPAddress.Parse("192.168.1.138");
            TcpListener listener = new TcpListener(address, port);
            listener.Start();

            MessageBox.Show("Server kết nối........");
            Socket s = listener.AcceptSocket();
            MessageBox.Show("Đã kết nối từ " + s.RemoteEndPoint);
            byte[] data = new byte[Size];
            string chuoi = "abc: ";
           // TcpClient socket = listener.AcceptTcpClient();
            //inputStream = new BufferedStream(socket.GetStream());
            bool kt = false;
            while (!kt)
            {
                
               // string aaa = streamReadLine(inputStream);
                s.Receive(data);
                chuoi = utf8.GetString(data);
                MessageBox.Show(chuoi);
                string[] a = Regex.Split(chuoi, "\0");
                string ThongTin = a[0];
                MessageBox.Show(ThongTin);


            }
        }
    }
}
